package com.dd.ms.auth.service;

import com.dd.ms.auth.pojo.resp.AuthResponse;
import com.dd.ms.auth.pojo.resp.RefreshTokenResponse;
import com.dd.ms.auth.req.LoginReq;
import com.dd.ms.auth.req.RegisterReq;
import org.springframework.web.bind.annotation.RequestBody;

import javax.servlet.http.HttpServletRequest;

/**
 * @Author liuxianmeng
 * @CreateTime 2025/7/9 10:15
 * @Description 类功能作用说明
 */
public interface AuthService {

    /**
     * 用户注册接口
     *
     * 密码处理流程：
     * 1. 前端传输明文密码（需HTTPS加密传输）
     * 2. 后端使用BCrypt算法加密
     * 3. 存储加密后的哈希值到数据库
     */
    AuthResponse register(RegisterReq req);

    /**
     * 用户登录接口
     *
     * @param req 包含用户名和密码的请求体
     * @return 包含JWT令牌的响应
     */
    AuthResponse login(@RequestBody LoginReq req, HttpServletRequest request);

    RefreshTokenResponse refreshToken(String refreshToken, HttpServletRequest request);

    /**
     * 退出登陆
     *
     * @param token
     */
    void logout(String token);
}
